import Vue from 'vue'
import App from './App.vue'
import router from './router'
import './plugins/element.js'
// 导入字体图标
import './assets/fonts/iconfont.css'
// 导入全局样式表
import './assets/css/global.css'
import axios from 'axios'
import TreeTable from 'vue-table-with-tree-grid' // 引入树形table插件
import VueQuillEditor from 'vue-quill-editor' // 引入富文本编辑器
// 导入富文本编辑器对应的样式
import 'quill/dist/quill.core.css'
import 'quill/dist/quill.snow.css'
import 'quill/dist/quill.bubble.css'

// 导入NProgress进度条的包的对应的js和css
import NProgress from 'nprogress'
import 'nprogress/nprogress.css'

axios.defaults.baseURL = 'http://127.0.0.1:8888/api/private/v1/' // 配置axios请求的根路径
// 通过 axios 请求拦截器添加 token，保证拥有获取数据的权限
// 在request拦截器中展示进度条 NProgress.start()
axios.interceptors.request.use(config => { // axios.interceptors.request请求拦截器, config为请求对象
  // console.log(config)
  NProgress.start()
  config.headers.Authorization = window.sessionStorage.getItem('token') // 为请求头对象，添加 Token 验证的 Authorization 字段
  return config // 在最后必须return config
})
// 在response拦截器中隐藏进度条 NProgress.done()
axios.interceptors.response.use(config => {
  NProgress.done()
  return config
})
Vue.prototype.$http = axios // 将axios挂载在Vue的原型的$http上

Vue.config.productionTip = false

// Vue.use(TreeTable) // 将TreeTable自动注册为Vue的全局组件
Vue.component('tree-table', TreeTable) // 将TreeTable手动注册为Vue的全局组件,并命名为tree-table

Vue.filter('dateFormat', function(originVal) { // 定义一个全局的时间格式化的过滤器
  const dt = new Date(originVal)
  const year = dt.getFullYear()
  const month = (dt.getMonth() + 1 + '').padStart(2, '0') // str.padStart(2, '0')若str字符串长度<2则往前补0, 否则什么也不做
  const day = (dt.getDate() + '').padStart(2, '0')
  const hour = (dt.getHours() + '').padStart(2, '0')
  const minute = (dt.getMinutes() + '').padStart(2, '0')
  const second = (dt.getSeconds() + '').padStart(2, '0')
  // return year + '-' + month + '-' + day + ' ' + hour + ':' + minute + ':' + second
  return `${year}-${month}-${day} ${hour}:${minute}:${second}`
})

Vue.use(VueQuillEditor) // 将富文本编辑器注册为全局可用的组件

new Vue({
  router,
  render: h => h(App)
}).$mount('#app')
